package com.xnyzc.lhy.didi.feign.Invoice;

import com.netflix.hystrix.contrib.javanica.annotation.HystrixCommand;
import com.xnyzc.lhy.didi.feign.fallback.invoice.OaSysInvoiceApplyServiceImpl;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceApplyResult;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceInvalidResult;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceQueryResult;
import com.xnyzc.lhy.finance.entity.invoice.response.InvoiceResendResult;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceApplyForDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceInvalidDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceQueryDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.ResendInvoiceDiDiParam;
import com.xnyzc.lhy.finance.entity.params.invoice.InvoiceInvalidDiDiParam;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;

/**
 * <p>
 * 发票服务
 * </p>
 *
 * @author haoyfa
 * @since 2019-10-25
 */
@FeignClient(name = "${feign.applicationName.finance}", fallback = OaSysInvoiceApplyServiceImpl.class)
public interface IOaSysInvoiceApplyService {
    /**
     * 发票申请
     * @param invoiceApplyForDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getInvoiceApplyForDiDi")
    public InvoiceApplyResult getInvoiceApplyForDiDi(@RequestBody InvoiceApplyForDiDiParam invoiceApplyForDiDiParam);

    /**
     * 发票查询
     * @param invoiceQueryDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getInvoiceQueryDiDi")
    public InvoiceQueryResult getInvoiceQueryDiDi(@RequestBody InvoiceQueryDiDiParam invoiceQueryDiDiParam);

    /**
     * 发票重发
     * @param resendInvoiceDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getResendInvoiceDiDi")
    public InvoiceResendResult getResendInvoiceDiDi(@RequestBody ResendInvoiceDiDiParam resendInvoiceDiDiParam);

    /**
     * 发票作废
     * @param invoiceInvalidDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getInvoiceInvalidDiDi")
    public InvoiceInvalidResult getInvoiceInvalidDiDi(@RequestBody InvoiceInvalidDiDiParam invoiceInvalidDiDiParam);

    /**
     * Aa发票申请
     * @param invoiceApplyForDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getInvoiceAaApplyForDiDi")
    InvoiceApplyResult getInvoiceAaApplyForDiDi(@RequestBody InvoiceApplyForDiDiParam invoiceApplyForDiDiParam);


    /**
     * Aa发票查询
     * @param invoiceQueryDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getInvoiceAaQueryDiDi")
    InvoiceQueryResult getInvoiceAaQueryDiDi(@RequestBody InvoiceQueryDiDiParam invoiceQueryDiDiParam);

    /**
     * AA发票作废
     * @param invoiceInvalidDiDiParam
     * @return
     */
    @PostMapping("/finance/invoiceapply/getInvoiceAaInvalidDiDi")
    InvoiceInvalidResult getInvoiceAaInvalidDiDi(@RequestBody InvoiceInvalidDiDiParam invoiceInvalidDiDiParam);
}
